package cn.bugstack.springframework.beans.factory.annotation;

import java.lang.annotation.*;

/**
 * 该注解用于限定自动装配时的候选bean。可以用于字段、方法、参数、类型和注解类型上。
 * 也可以用于其他自定义注解上，作为这些注解的限定符。
 *
 * @Target 指定该注解可以用于哪些元素类型：字段、方法、参数、类型和注解类型。
 * @Retention 指定该注解的生命周期为运行时，即在运行时可以读取到该注解。
 * @Inherited 指定该注解具有继承性，如果一个类型上应用了@Qualifier注解，其子类型也会继承这个注解。
 * @Documented 将该注解包含在Javadoc中。
 */
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Qualifier {

    /**
     * 限定符的值，默认为空字符串。可以用于进一步指定候选bean的标识。
     *
     * @return 返回限定符的值，默认为空字符串。
     */
    String value() default "";

}

